package eightDataType.mStr;

import fileDemo.mfile.FileUtils;
import org.junit.Test;

/**
 * @author Ajie
 * @date 5/12/21
 * @function string 在堆 中长度测试。
 * 结论 ，受堆大小限制。
 */
public class StringLengthMaxTest {
    private static final String strFilePath = "./src/eightDataType/mStr/StringLengthFile.txt";


    //计算最大存储长度
    @Test
    public void main() {

//        byte[] bytes = new byte[65536];
//        byte[] bytes = new byte[65536*2];
//        byte[] bytes = new byte[Integer.MAX_VALUE - 10];//java.lang.OutOfMemoryError: Java heap space
//        byte[] bytes = new byte[Integer.MAX_VALUE /2];// java.lang.OutOfMemoryError: Java heap space
        byte[] bytes = new byte[Integer.MAX_VALUE /10];// ok
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] = (byte)( 'a'+(byte) (i%26));
        }
        FileUtils.writeFileFromBytesByStream(strFilePath,bytes);

        String s = new String(FileUtils.readFile2BytesByStream(strFilePath));
        System.out.println(s.length());
//        System.out.println(s.length()- Character.MAX_VALUE);
        System.out.println(s.length()- Integer.MAX_VALUE);
    }
}
